/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package pessoas.CommandListaContatos;

import java.io.IOException;
import javax.swing.JOptionPane;
import pessoas.collection.Contatos;
import pessoas.dataHora.DataHora;
import pessoas.interfaces.ICommandListaContatos;
import pessoas.model.Contato;
import pessoas.model.Usuario;
import pessoas.presenter.ContatoZelador;
import pessoas.presenter.ListaContatosPresenter;

/**
 *
 * @author Bush
 */
public class ExcluirCommandLista implements ICommandListaContatos {

    private ListaContatosPresenter presenter;
    private DataHora dataHora;
    private Contatos contatos;
    private Usuario usuario;

    public ExcluirCommandLista(ListaContatosPresenter view, Contatos contatos, Usuario usuario) {
        this.presenter = view;
        this.contatos = contatos;
        this.usuario = usuario;
        this.dataHora = new DataHora();
    }

    @Override
    public void exercutar() {
        Contato c = null;
        try {
            if (presenter.getView().getTabela().getSelectedRow() >= 0
                    && JOptionPane.showConfirmDialog(null, "Deseja reamente excluir " + presenter.getView().getTabela().getValueAt(presenter.getView().getTabela().getSelectedRow(), 0) + " ?") == 0) {
                c = new Contato(presenter.getView().getTabela().getValueAt(presenter.getView().getTabela().getSelectedRow(), 0).toString(),
                        presenter.getView().getTabela().getValueAt(presenter.getView().getTabela().getSelectedRow(), 1).toString(),
                        presenter.getView().getTabela().getValueAt(presenter.getView().getTabela().getSelectedRow(), 2).toString(),
                        presenter.getView().getTabela().getValueAt(presenter.getView().getTabela().getSelectedRow(), 3).toString(),
                        presenter.getView().getTabela().getValueAt(presenter.getView().getTabela().getSelectedRow(), 4).toString());
                ContatoZelador.getInstancia().adcionarMemento(c.getContatoMemento());
                contatos.excluirContato(c);
                contatos.gravarLog("<Exclusão> do contato <<" + c.getNome() + ">>,<<" + dataHora.getHora() + ">>,<<" + dataHora.getData()
                        + ">>,<<" + this.usuario.getNomeUsuario() + ">>.");
                JOptionPane.showMessageDialog(null, "Contato Excluido com sucesso !!");
            } else {
                throw new Exception("Selecione uma linha !!");
            }
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage());
            try {
                contatos.gravarLog("Ocorreu a falha:" + ex.getMessage() + "ao realizar <Exclusão> do contato <<" + c.getNome() + ">>,<<" + dataHora.getHora() 
                        + ">>,<<" + dataHora.getData() + ">>,<<" + this.usuario.getNomeUsuario() + ">>.");
            } catch (IllegalAccessException ex1) {
                JOptionPane.showMessageDialog(null, ex1);
            } catch (InstantiationException ex1) {
                JOptionPane.showMessageDialog(null, ex1);
            } catch (ClassNotFoundException ex1) {
                JOptionPane.showMessageDialog(null, ex1);
            } catch (IOException ex1) {
                JOptionPane.showMessageDialog(null, ex1);
            }
        }
    }
}
